package com.twb.quartz.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.quartz.SchedulerException;

import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;
import com.twb.quartz.entity.twbQuartzJob.TwbQuartzJob;
import com.twb.quartz.entity.twbQuartzJob.dto.SearchTwbQuartzJobDto;
import com.twb.quartz.entity.twbQuartzJob.vo.SaveTwbQuartzJobVo;
import com.twb.quartz.entity.twbQuartzJob.vo.SearchTwbQuartzJobVo;
import com.twb.quartz.entity.twbQuartzJob.vo.UpdateTwbQuartzJobByIdVo;

/** 
 * @ClassName ITwbQuartzJobService 
 * @Description 定时任务 service接口
 
 * @author DSY
 * @date 2021-12-26 10:46:41 
 */ 
public interface ITwbQuartzJobService extends IBaseService<TwbQuartzJob> {

	/**
	 * @Title  searchTwbQuartzJob
	 * @Description 分页查询
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public TwbPageInfo<SearchTwbQuartzJobDto> searchTwbQuartzJob(SearchTwbQuartzJobVo vo);
	
	/**
	 * @Title  searchTwbQuartzJob
	 * @Description 查询集合
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public List<SearchTwbQuartzJobDto> searchTwbQuartzJobList(SearchTwbQuartzJobVo vo);

	/**
	 * @Title  saveTwbQuartzJob
	 * @Description 保存信息
	 * @param vo
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public boolean saveTwbQuartzJob(SaveTwbQuartzJobVo vo) throws SchedulerException;

	/**
	 * @Title  updateTwbQuartzJobById
	 * @Description 更新信息
	 * @param vo
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public boolean updateTwbQuartzJobById(UpdateTwbQuartzJobByIdVo vo) throws SchedulerException;

	/**
	 * @Title  deleteTwbQuartzJobById
	 * @Description 删除信息
	 * @param id
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public boolean deleteTwbQuartzJobById(String id) throws SchedulerException;
	/**
	 * @Title  deleteTwbQuartzJobByIds
	 * @Description 批量删除信息
	 * @param ids
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public int deleteTwbQuartzJobByIds(String ids) throws SchedulerException;
	
	/**
	 * @Title  exportExcel
	 * @Description 导出excel
	 * @param exportExcelVo
	 * @param searchVo
	 * @return
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public void exportExcel(SearchTwbQuartzJobVo vo, HttpServletResponse response) throws Exception;
	
	/**
	 * @Title  importExcel
	 * @Description 导入excel
	 * @param map
	 * @return
	 * @author DSY
	 * @date 2021-12-26 10:46:41
	 */
	public int importExcel(Map<String, String> map);
	
	/**
	 * @Title pauseJob
	 * @Description 暂停任务
	 * @param job
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021年12月26日 下午8:15:34
	 */
	public boolean pauseJob(String id) throws SchedulerException;
	
	/**
	 * @Title resumeJob
	 * @Description 恢复任务
	 * @param job
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021年12月26日 下午8:15:57
	 */
	public boolean resumeJob(String id) throws SchedulerException;
	
	/**
	 * @Title chageStatus
	 * @Description 修改任务状态
	 * @param job
	 * @return
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021年12月26日 下午8:16:40
	 */
	public boolean chageStatus(String id,String status) throws SchedulerException;
	
	/**
	 * @Title runJob
	 * @Description 立即执行任务
	 * @param job
	 * @throws SchedulerException 
	 * @author DSY
	 * @date 2021年12月26日 下午8:17:10
	 */
	public void runJob(String id) throws SchedulerException;
	
	/**
	 * @Title checkCronValid
	 * @Description 校验cron表达式是否有效
	 * @param cronExpression
	 * @return
	 * @author DSY
	 * @date 2021年12月26日 下午8:17:54
	 */
	public boolean checkCronValid(String cronExpression);

	/**
	 * @throws SchedulerException 
	 * @Title startAllJobs
	 * @Description 启动全部有效定时任务
	 * @author DSY
	 * @date 2021年12月26日 下午9:15:06
	 */
	public void startAllJobs() throws SchedulerException;
}
